perm filename STUDY4.SAI[11,ALS] blob sn#063641 filedate 1973-09-26 generic text, type T, neo UTF8
00010	BEGIN "STUDY"
00020	DEFINE ⊂="COMMENT"; ⊂ AUG.2,1973;
00030	DEFINE ⊃="⊂";
00040	REQUIRE "BLOCKS.HDR[4,ALS]" SOURCE_FILE;
00050	INTEGER ARRAY LFILE[0:'177];
00060	INTEGER ARRAY SYMBOL[0:127];
00070	STRING ARRAY SAMPLE[0:127];
00080	INTEGER I,J,K,L,M,N,P,PP,Q,R,POINTX,STATE,DELTA,VAL,CHAN1,EOF,DVAL,DK,DDVAL,DDK,DDDVAL,DDDK;
00090	INTEGER II,JJ,KK,NN,SEGC,BRK,EOFA,READ3,SEGTOT,SEGIN;
00100	BOOLEAN ER;
00110	INTEGER CHAN2,CHAN3,CHAN4,CHAN5,CHAN6,CHANX;
00120	INTEGER ARRAY BUF[0:511];
00130	STRING FILEN,READ,READ1,FILEO,READ2,FILEQ,TFILE,FILLST;
00140	⊂ STATE=0 means on way up
00150	  STATE=1 means on way down;
00160	
00170	PROCEDURE OUTALL(STRING S);
00180	BEGIN
00190	STRING SS; INTEGER J;
00200	SETBREAK(18,0,NULL,"OSN");
00210	SS←SCAN(S,18,J);
00220	OUTSTR(SS);
00230	END;
00240	
00250	PROCEDURE DATAIN;
00260	BEGIN
00270	INTEGER J;
00280	  FOR J←0 STEP 1 UNTIL 511 DO BUF[J]←0;
00290	  IF EOF=0 THEN ARRYIN(CHAN1,BUF[0],512)
00300	  ELSE OUTSTR("No more data with JJ= "&CVS(JJ)&"SEGC= "&CVS(SEGC)&CRLF);
00310	  POINTX←POINT(12,BUF[0],-1);
00320	SEGC←II←II+12; JJ←II+11;
00330	END;
00340	
00350	PROCEDURE FRIC;
00360	BEGIN
00370	INTEGER JJJ;
00380	  M←0;
00390	  FOR JJJ←0 STEP 1 UNTIL 127 DO BEGIN
00400	    VAL←ILDB(POINTX); IF VAL>2047 THEN VAL←VAL-4096;
00405	    DVAL←VAL-K; DDVAL←DVAL-DK; DDDVAL←DDVAL-DDK;
00410	    IF STATE=0 THEN BEGIN
00420	     IF DDDVAL<DDDK-DELTA THEN BEGIN
00430	      M←M+(DDDK-DDDVAL); STATE←-1; END; END ELSE
00440	     IF DDDVAL>DDDK+DELTA THEN  BEGIN
00450	      M←M+(DDDVAL-DDDK); STATE←0; END;
00460	    K←VAL; DK←DVAL;DDK←DDVAL; DDDK←DDDVAL;
00470	    IF JJJ=3 THEN M←0;
00480	    END;
00485	M←M%400; IF M>63 THEN M←63;
00490	SEGC←SEGC+1;
00500	END;
00510	
00520	PROCEDURE SKIP;
00530	BEGIN
00540	INTEGER JJJ;
00550	 FOR JJJ←0 STEP 1 UNTIL 127 DO IBP(POINTX);
00560	K←LDB(POINTX); IF K>2047 THEN K←K-4096;
00570	SEGC←SEGC+1;
00580	⊃ OUTSTR("Skip to segc= "&CVS(SEGC)&CRLF);
00590	END;
00600	
00610	FILEN←"HI20.001[CMP,NJM]";
00620	  FILEO←"SEG1.FRI";
00630	OUTSTR("Specify DELTA (CR for 15) ");
00640	IF (READ←INCHWL)="" THEN DELTA←15 ELSE DELTA←CVD(READ);
00650	STDBRK(1);
00660	 SETBREAK(14,"∃",NULL,"INS");
00670	 SETBREAK(15,'11&'12&'14&'15&'40,NULL,"INS");
00680	 SETBREAK(16,'56,NULL,"INA");
00690	 SETBREAK(17,'12,'15,"INS");
00700	
00710	CHAN1←1; CHAN2←2; CHAN3←3;  CHAN4←4; CHAN5←5; CHAN6←6;
00720	OUTSTR("This program will list header information in man-readable form"
00730	  &CRLF&"togather with the output from procedure FLOPS"&crlf);
00740	
00750	CLOSE(CHAN4); OPEN(CHAN4,"DSK",1,2,0,3500,BRK,EOFA);
00760	LOOKUP(CHAN4,"MAP.PHN",ER);
00770	WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find MAP.PHN[NET,NJM].  File = ");
00780	LOOKUP(CHAN4,TFILE←INCHWL,ER); END;  EOFA←0;
00790	FILLST←INPUT(CHAN4,14);
00800	⊂ OUTSTR("MAP.PHN contains "&CRLF&FILLST&CRLF);
00810	CLOSE(CHAN4);
00820	
00830	FOR I←0 STEP 1 UNTIL 127 DO  BEGIN
00840	  WHILE TRUE DO BEGIN
00850	    READ1←SCAN(FILLST,17,K);
00860	    READ3←READ1[1 TO 1];
00870	    IF READ3≠"⊂"  THEN DONE; END;
00880	IF READ3="" THEN DONE;
00890	  SYMBOL[I]←CVASC(SCAN(READ1,15,K));
00900	  SAMPLE[I]←READ1; END;
00910	
00920	FOR PP←1 STEP 1 UNTIL 26 DO BEGIN "FILEREAD"
00930	  CLOSE(CHAN1); OPEN(CHAN1,"DSK",'10,10,0,0,0,EOF);
00940	SETFORMAT(-3,0); FILEQ←CVS(PP);
00950	  FILEN←FILEN[1 TO 5]&FILEQ&"[CMP,NJM]";
00960	LOOKUP(CHAN1,FILEN,ER); TFILE←FILEN;
00970	WHILE ER DO BEGIN
00980	   OUTSTR(CRLF&"Can not find file "&TFILE&"  File= ");
00990	   LOOKUP(CHAN1,TFILE←INCHWL,ER); END;
01000	J←K←L←STATE←VAL←R←0;
01010	SETFORMAT(1,0);  FILEQ←CVS(PP);
01020	
01030	READ←FILEO[1 TO 3]&FILEQ&".T0X";
01040	CLOSE(CHAN4); OPEN(CHAN4,"DSK",'10,10,0,0,0,EOFA);
01050	LOOKUP(CHAN4,READ,ER); TFILE←READ;
01060	WHILE ER DO BEGIN
01070	   OUTSTR(CRLF&"Can not find file "&TFILE&"  File= ");
01080	   LOOKUP(CHAN4,TFILE←INCHWL,ER); END;
01090	ARRYIN(CHAN4,LFILE[0],'200);	⊂ Input header;
01100	SEGTOT←(LFILE[0]*6)%256;
01110	⊃ OUTSTR(FILEI&" "&CVS(SEGTOT)&"   ");
01120	CLOSE(CHAN4);
01130	
01140	READ2←READ;
01150	READ1←SCAN(READ2,16,J)&"DOC";
01160	⊃ OUTSTR("Ready to write "&READ1&TB);
01170	OPEN(CHAN4,"DSK",0,0,10,0,0,EOFA);
01180	ENTER(CHAN4,READ1,0);
01190	OUT(CHAN4," Header information from file   "&READ&"."&TB&TB&DATIME&CRLF);
01200	OUT(CHAN4," Acoustic data from file  "&FILEN&CRLF);
01210	OUT(CHAN4,"   Produced by program STUDY and filed in  "&READ1&"."&CRLF);
01220	OUT(CHAN4,"     Frication measure computed with DELTA set at "&cvs(delta)&CRLF);
01230	OUT(CHAN4," "&CRLF&" ");
01240	  FOR I←0 STEP 1 UNTIL 9 DO OUT(CHAN4,CVS(LFILE[I])&TB);
01250	OUT(CHAN4,CRLF&" ");
01260	  FOR I←10 STEP 1 UNTIL 20 DO OUT(CHAN4,CVXSTR(LFILE[I]));
01270	  OUT(CHAN4,CRLF&LF);
01280	OUTSTR(CRLF&"  ");
01290	  FOR I←10 STEP 1 UNTIL 20 DO OUTSTR(CVXSTR(LFILE[I]));
01300	OUTSTR(CRLF&LF);
01310	OUT(CHAN4,"Frication measure"&TB&"Header information"&TB&"Explanation"&CRLF);
01320	OUT(CHAN4,"First"&TB&"Average"&TB&"Last"&TB&
01330	   "Hint"&TB&"Start"&TB&"Length"&TB&"Example"&TB&"Features"&CRLF);
01340	OUTSTR(CRLF&"First"&TB&"Average"&TB&"Last"&TB
01350	   &"Symbol"&TB&"Start"&TB&"Length"&TB&"Sample"&TB&"Features"&CRLF&LF);
01360	
01370	II←-11; JJ←-1; SETFORMAT(4,0); SEGIN←0;
01380	FOR I←21 STEP 1 UNTIL 127 DO BEGIN
01390	  IF LFILE[I]=0 THEN IF I>0 THEN DONE ELSE BEGIN OUTSTR("No data."&crlf);
01400	    done end;
01410	  L←LFILE[I] LAND '777760000000;
01420	  FOR Q←0 STEP 1 UNTIL 126 DO IF L=SYMBOL[Q] THEN DONE;
01430	  J←LDB(POINT(14,LFILE[I],27)); KK←LDB(POINT(8,LFILE[I],35));
01440	
01450	IF KK≤0 THEN BEGIN OUT(CHAN4,TB&TB&TB); OUTSTR(TB&TB&TB); END ELSE BEGIN
01460	  IF II>J THEN BEGIN
01470	    OUTSTR("Out of step with SEGC= "&CVS(SEGC)&", J= "&CVS(J)&" and II= "&
01480	     CVS(II)&CRLF);
01490	    INCHWL; END;
01500	WHILE JJ<J DO DATAIN;
01510	WHILE SEGC<J DO SKIP;
01520	FRIC;
01530	IF M>0 THEN OUT(CHAN4,CVS(M)&TB) ELSE OUT(CHAN4,"  "&TB);
01540	IF M>0 THEN OUTSTR(CVS(M)&TB) ELSE OUTSTR("  "&TB);
01550	N←M;
01560	FOR R←2 STEP 1 UNTIL KK DO BEGIN
01570	  IF SEGC>JJ THEN DATAIN;
01580	  FRIC; N←N+M; END;
01590	N←N%KK; 
01600	IF N>0 THEN OUT(CHAN4,CVS(N)&TB) ELSE OUT(CHAN4,"  "&TB);
01610	IF M>0 THEN OUT(CHAN4,CVS(M)&TB) ELSE OUT(CHAN4,"  "&TB);
01620	IF N>0 THEN OUTSTR(CVS(N)&TB) ELSE OUTSTR("  "&TB);
01630	IF M>0 THEN OUTSTR(CVS(M)&TB) ELSE OUTSTR("  "&TB);
01640	END;
01650	
01660	  OUT(CHAN4,CVSTR(L)&TB&CVS(J)&TB&CVS(KK)&TB&SAMPLE[Q]&CRLF);
01670	  OUTALL(CVSTR(L)&TB&CVS(J)&TB&CVS(KK)&TB&SAMPLE[Q]&CRLF);
01680	  END; CLOSE(CHAN4);
01690	
01700	OUTSTR(CRLF&"File "&READ1&" has been written."&CRLF&LF);
01710	IF (STRIN("Do you want it spooled (Y or CR) "))="Y" THEN
01720	  SPOOL(READ1,GETCHAN,0);
01730	END "FILEREAD";
01740	END "STUDY";